package Elementos;

import Mario.Mario;

/**
 * B bomba
 * E estrella
 * F florFuego
 * G goomba
 * H hongoVerde
 * K koopaTroopa
 * L ladrillo
 * M ladrilloMagico
 * S superHongo
 * Y moneda
 */
public class Celda {
	protected int posX;
	protected int posY;
	protected Elemento item;
	protected boolean transitable;
	
	// Constructores
	public Celda(){
		posX = 0;
		posY = 0;
		item = null;
		transitable = false;
	}
	
	// Dependiendo de la ID se llama al constructor correspondiente de Elemento
	public Celda(char ID){
		posX = 0;
		posY = 0;
		switch(ID){
		
		case 'L' : {
			item = new Ladrillo(this);
			transitable = false;
			item.setEstatico(true);
			break;
		}
			case 'X' :{
				item = new Ladrillo(this);
				transitable = false;
				item.setEstatico(true);
				break;
			}
			case 'V' :{
				item = new Vacia(this);
				transitable = true;
				item.setEstatico(true);
				break;
			}
			case 'M' :{
				item = new Mario(this);
				transitable = true;
				item.setEstatico(true);
				break;
			}
			case 'G' :{
				item = new Goomba(this);
				transitable = true;
				item.setEstatico(false);
				break;
			}
			case 'Y' :{
				item = new Moneda(this);
				transitable = true;
				item.setEstatico(true);
				break;
			}
			case 'E' :{
				item = new Estrella(this);
				transitable = true;
				item.setEstatico(false);
				break;
			}
			case 'F' :{
				item = new FlorFuego(this);
				transitable = true;
				item.setEstatico(true);
				break;
			}
			case 'S' :{
				item = new SuperHongo(this);
				transitable = true;
				item.setEstatico(true);
				break;
			}
			case 'Q' :{
				item = new LadrilloMagico(this);
				transitable = true;
				item.setEstatico(true);
				break;
			}
			case 'B' :{
				item = new Bomba(this);
				transitable = true;
				item.setEstatico(false);
				break;
			}
			case 'H' :{
				item = new HongoVerde(this);
				transitable = true;
				item.setEstatico(false);
				break;
			}
			case 'K' :{
				item = new KoopaTroopa(this);
				transitable = true;
				item.setEstatico(false);
				break;
			}
			
		}
	}
	
	
	// Dependiendo de la ID se llama al constructor correspondiente de Elemento
	public Celda(char ID, int x, int y){
		posX = x;
		posY = y;
		switch(ID){
		case 'L' : {
			item = new Ladrillo(this);
			transitable = false;
			item.setEstatico(true);
			break;
		}
		case 'X' :{
			item = new Ladrillo(this);
			transitable = false;
			item.setEstatico(true);
			break;
		}
		case 'V' :{
			item = new Vacia(this);
			transitable = true;
			item.setEstatico(true);
			break;
		}
		case 'M' :{
			item = new Mario(this);
			transitable = true;
			item.setEstatico(true);
			break;
		}
		case 'G' :{
			item = new Goomba(this);
			transitable = true;
			item.setEstatico(false);
			break;
		}
		case 'Y' :{
			item = new Moneda(this);
			transitable = true;
			item.setEstatico(true);
			break;
		}
		case 'E' :{
			item = new Estrella(this);
			transitable = true;
			item.setEstatico(false);
			break;
		}
		case 'F' :{
			item = new FlorFuego(this);
			transitable = true;
			item.setEstatico(true);
			break;
		}
		case 'S' :{
			item = new SuperHongo(this);
			transitable = true;
			item.setEstatico(false);
			break;
		}
		case 'Q' :{
			item = new LadrilloMagico(this);
			transitable = false;
			item.setEstatico(true);
			break;
		}
		case 'H' :{
			item = new HongoVerde(this);
			transitable = true;
			item.setEstatico(false);
			break;
		}
		case 'B' :{
			item = new Bomba(this);
			transitable = true;
			item.setEstatico(true);
			break;
		}
		case 'K' :{
			item = new KoopaTroopa(this);
			transitable = true;
			item.setEstatico(false);
			break;
		}
		
		
	}
	}
	
	// Consultas
	public int getPosX(){
		return posX;
	}
	
	public int getPosY(){
		return posY;
	}
	
	public Elemento getElemento(){
		return item;
	}
	
	public boolean getTransitable(){
		return transitable;
	}
	
	public void setPosX(int x){
		posX = x;
	}
	
	public void setPosY(int y){
		posY = y;
	}
	
	public void setTransitable(boolean e){
		transitable = e;
	}
	public void setElement(Elemento e){
		item = e;
	}
}

